package com.kt.learn1

/**
 * Kotlin 运算符示例
 * 包括算术运算符、比较运算符和逻辑运算符
 */

fun main() {
    // 算术运算符
    chapter1ArithmeticOperators()

    // 比较运算符
    chapter2ComparisonOperators()

    // 逻辑运算符
    chapter3LogicalOperators()
}

// 算术运算符
fun chapter1ArithmeticOperators() {
    println("\n===== 算术运算符 =====")

    val a = 10
    val b = 3

    // 加法
    println("a + b = ${a + b}") // 输出：a + b = 13

    // 减法
    println("a - b = ${a - b}") // 输出：a - b = 7

    // 乘法
    println("a * b = ${a * b}") // 输出：a * b = 30

    // 除法
    println("a / b = ${a / b}") // 输出：a / b = 3（整数除法）

    // 取模（余数）
    println("a % b = ${a % b}") // 输出：a % b = 1

    // 自增
    var c = a
    c++
    println("c++ = $c") // 输出：c++ = 11

    // 自减
    var d = a
    d--
    println("d-- = $d") // 输出：d-- = 9
}

// 比较运算符
fun chapter2ComparisonOperators() {
    println("\n===== 比较运算符 =====")

    val x = 10
    val y = 20

    // 等于
    println("x == y: ${x == y}") // 输出：x == y: false

    // 不等于
    println("x != y: ${x != y}") // 输出：x != y: true

    // 大于
    println("x > y: ${x > y}") // 输出：x > y: false

    // 小于
    println("x < y: ${x < y}") // 输出：x < y: true

    // 大于等于
    println("x >= y: ${x >= y}") // 输出：x >= y: false

    // 小于等于
    println("x <= y: ${x <= y}") // 输出：x <= y: true
}

// 逻辑运算符
fun chapter3LogicalOperators() {
    println("\n===== 逻辑运算符 =====")

    val p = true
    val q = false

    // 逻辑与（AND）
    println("p && q: ${p && q}") // 输出：p && q: false

    // 逻辑或（OR）
    println("p || q: ${p || q}") // 输出：p || q: true

    // 逻辑非（NOT）
    println("!p: ${!p}") // 输出：!p: false
    println("!q: ${!q}") // 输出：!q: true

    // 三元运算符（Kotlin 中没有三元运算符，但可以用 if 表达式代替）
    val result = if (p) "p is true" else "p is false"
    println("result: $result") // 输出：result: p is true
}